home *** CD-ROM | disk | FTP | other *** search
/ BCI NET 2 / BCI NET 2.iso / archives / programming / basic / cursor.lha / Cursor / Cursor.dok < prev    next >
Encoding:
Text File  |  1994-02-24  |  12.2 KB  |  386 lines

  1.  
  2.  Cursor V1.7 - Ein BASIC-Compiler
  3.  (c) Copyright 1990-1994 Jürgen Forster
  4.  
  5. Dieses Programm ist Shareware. Es darf für eine kleine Kopiergebühr
  6. weitergegeben werden, wird es aber oft benutzt, so sollte eine Sharegebühr
  7. von 20 DM oder 15$ an den Autor geschickt werden.
  8.  
  9. "Cursor" übersetzt BASIC-Programme, die für den AmigaBASIC-Interpreter
  10. geschrieben wurden, in allein lauffähige Programme, die vom CLI oder von
  11. der Workbench aus gestartet werden können und schneller sind, als wenn
  12. sie vom Interpreter aus ablaufen. Es werden (noch?) nicht alle Befehle des
  13. AmigaBASIC-Interpreters unterstützt, eine Liste der möglichen Befehle ist
  14. unter "UNTERSTÜTZTE BEFEHLE UND FUNKTIONEN" zu finden.
  15.  
  16. Ich übernehme keine Verantwortung für irgendwelche Schäden, die dieses
  17. Programm anrichten könnte.
  18.  
  19. Mit "Cursor" übersetzte Programme dürfen (einschließlich der "basic.library")
  20. nur weitergegeben oder verkauft werden, wenn die Shareware-Gebühr bezahlt
  21. wurde.
  22.  
  23.  
  24.  
  25.  
  26.   INSTALLATION
  27.  
  28. Um den "Cursor" zu benutzen, muß die Datei "Cursor" ins "C:"-Verzeichnis
  29. und die Datei "basic.library" ins "LIBS:"-Verzeichnis kopiert werden.
  30. Alle Programme, die mit "Cursor" übersetzt wurden, brauchen diese Library,
  31. außer sie wurden mit der "STANDALONE"-Option übersetzt (siehe unter
  32. "OPTIONEN").
  33. Außerdem werden die Mathematik-Libraries "mathtrans.library",
  34. "mathieeedoubbas.library" und "mathieeedoubtrans.library" benötigt,
  35. die sich also auch im "LIBS:"-Verzeichnis befinden müssen.
  36. "Cursor" schreibt einige temporäre Dateien in das T:-Verzeichnis, das sich
  37. am besten in der RAM-Disk befindet ("assign T: RAM:").
  38.  
  39.  
  40.  
  41.  
  42.   BENUTZUNG
  43.  
  44. Um ein BASIC-Programm zu übersetzen, muß es im ASCII-Format vorhanden
  45. sein (AmigaBASIC-Programme können aus dem Interpreter heraus mit
  46. SAVE "Name.bas",A im ASCII-Format abgespeichert werden).
  47. Vom CLI aus kann man "Cursor" mit dem BASIC-Programmnamen als Parameter
  48. aufrufen. Es können außerdem einige Optionen eingestellt werden (siehe
  49. bei "OPTIONEN").
  50. Will man "Cursor" von der Workbench aus starten, benutzt man den Editor
  51. "CursorMenu" (der natürlich auch vom CLI aus gestartet werden kann), von
  52. dem aus sich die Optionen über Menüs einstellen lassen.
  53. Wenn während der Übersetzung kein Fehler auftritt, wird ein ausführbares
  54. Programm erzeugt, dessen Name der des Quelltextes ohne Endung ist.
  55.  
  56.  
  57.  
  58.  
  59.   ÜBERSETZTE PROGRAMME
  60.  
  61. - Alle von "Cursor" übersetzten Programme sind "Pure", "Cursor" setzt
  62.   automatisch das "Pure-Bit" dieser Programme.
  63.  
  64. - Alle Programme können von der Workbench oder dem CLI aus gestartet werden.
  65.   Von CLI übergebene Parameter werden so behandelt, als ob der Benutzer sie
  66.   über die Tastatur getrennt durch die <RETURN>-Taste eingegeben hätte.
  67.  
  68. - Tritt während des Ablaufs eines Programms ein Fehler auf, so wird
  69.   die Fehlermeldung entweder in das CLI-Fenster (Standardausgabedatei)
  70.   geschrieben oder ein Requester wird angezeigt. Wenn z.B. eine Datei mit
  71.   "OPEN" geöffnet werden sollte, aber nicht vorhanden ist, so wird der
  72.   genaue Fehler (OBJECT_NOT_FOUND) angezeigt. Außerdem wird ggf. die
  73.   Zeilennummer im Quelltext, an der der Fehler aufgetreten ist, angezeigt
  74.   (siehe "OPTIONEN").
  75.  
  76. - Die Übersetzten Programme können fast immer mit Hilfe eines WINDOWCLOSE-
  77.   Gadgets oder mit <CTRL>-C abgebrochen werden.
  78.  
  79.  
  80.  
  81.  
  82.   OPTIONEN
  83.  
  84. Es können verschiedene Optionen eingestellt werden, die das übersetzte
  85. Programm beeinflussen. Die Wahl der Optionen geschieht entweder vom Editor
  86. "CursorMenu" aus, durch den OPTION-Befehl im Quelltext (z.B. "OPTION
  87. NOWINDOW") oder durch CLI-Parameter (z.B. "Cursor -m2 Test.bas").
  88.  
  89. Folgende Optionen sind möglich:
  90.  
  91. - NOWINDOW (-w0 vom CLI), OPENWINDOW (-w1)
  92.   Bei NOWINDOW wird beim Start des übersetzten Programms kein Fenster
  93.   automatisch geöffnet.
  94.   Bei OPENWINDOW (Voreinstellung) wird ein neues Fenster mit der Nummer 1
  95.   auf dem Workbench-Bildschirm oder dem Bildschirm des Editors "CursorMenu"
  96.   in dessen Größe geöffnet.
  97.  
  98. - ALLPCRELATIVE (-b2), SOMEPCRELATIVE (-b1), NOPCRELATIVE (-b0)
  99.   Bei ALLPCRELATIVE wird angenommen, daß alle Verzweigungen im übersetzten
  100.   Programm nicht weiter als 32K entfernt reichen. Dadurch werden Programme,
  101.   die nicht zu groß sind, noch etwas kürzer.
  102.   Bei SOMEPCRELATIVE (Voreinstellung) reicht es, daß alle Verzweigungen
  103.   innerhalb von Unterprogrammen nicht weiter als 32K entfernt reichen.
  104.   Bei NOPCRELATIVE können alle Verzweigungen beliebig weit reichen.
  105.  
  106. - STANDALONE (-s)
  107.   Wenn diese Option gewählt wird, wird die "basic.library" nicht mehr
  108.   gebraucht, wenn das übersetzte Programm abläuft, sie muß nun aber während
  109.   der Übersetzung im aktuellen oder im "LIBS:"-Verzeichnis vorhanden sein.
  110.   Obwohl das übersetzte Programm so etwa 30K länger wird, wird nun immer die
  111.   gleiche und richtige Version der "basic.library" benutzt. Wenn Sie ihre
  112.   Programme an andere Benutzer weiter geben wollen, so sollten sie diese
  113.   Option benutzen.
  114.  
  115. - LISTING (-l[<listing file>])
  116.   Bei dieser Option wird eine Liste der im Programm verwendeten Variablen
  117.   erzeugt. In dieser Liste wird angegeben, in welchem Unterprogramm
  118.   jede Variable verwendet wird, und in welchen Zeilen des Programmes sie
  119.   benutzt wird. Die Liste wird in eine Datei mit der Endung ".lst" oder
  120.   in die Datei, die der Benutzer vom CLI aus gewählt hat, geschrieben.
  121.  
  122.  
  123.  
  124.  
  125.   UNTERSTÜTZTE BEFEHLE UND FUNKTIONEN
  126.  
  127. "Ja" heißt, daß der Befehl oder die Funktion (fast) genauso wie
  128. beim AmigaBASIC-Interpreter funktioniert, "Nein" heißt, daß der Befehl/die
  129. Funktion noch nicht verwendbar ist.
  130. Wenn ein Befehl oder eine Funktion noch nicht unterstützt werden, so wird
  131. das nicht unbedingt schon bei der Übersetzung des Programms angezeigt,
  132. manchmal bricht das übersetzte Programm erst dann ab, wenn es zu einem
  133. solchen Befehl gelangt und gibt eine "Advanced Feature"-Fehlermeldung aus.
  134.  
  135. ABS()              Ja
  136. AREA               Ja
  137.   20 verschiedene Punkte können gesetzt werden.
  138. AREAFILL           Ja
  139. ASC()              Ja
  140. ATN()              Ja
  141. BEEP
  142.   Bildschirm blinkt nur auf, kein Ton.
  143. BREAK              Ja
  144. CALL               Ja
  145. CDBL()             Ja
  146. CHAIN              Nicht möglich
  147. CHDIR              Ja
  148. CHR$()             Ja
  149. CINT()             Ja
  150. CIRCLE             Nein
  151. CLEAR              Ja
  152.   Dient zum Festlegen der Größe des Speichers für die String-Variablen
  153.   und der Größe des Stapelspeichers (für GOSUB/RETURN und CALL/SUB).
  154.   Während das übersetzte Programm abläuft werden die Größen dieser
  155.   Speicherbereiche aber nicht mehr verändert, es wird immer der größte
  156.   während des Übersetzens auftretende Wert verwendet. D.h. daß als Parameter
  157.   hier keine Variablen sondern nur Konstante angegeben werden dürfen. Die
  158.   Voreinstellungen sind 25000 Bytes für String-Variable und 4000 Bytes für
  159.   den Stack.
  160. CLNG()             Ja
  161. CLOSE              Ja
  162. CLS                Ja
  163. COLLISION          Ja
  164. COLLISION()        Ja
  165. COLOR              Ja
  166. COMMON             Nicht möglich
  167. CONT               Nicht möglich
  168. COS()              Ja
  169. CSNG()             Ja
  170. CSRLIN             Ja
  171. CVI()              Ja
  172. CVL()              Ja
  173. CVS()              Ja
  174. CVD()              Ja
  175. DATA               Ja
  176. DATE$              Ja
  177. DECLARE FUNCTION   Ja
  178. DEF FN             Ja
  179. DEFINT             Ja
  180. DEFLNG             Ja
  181. DEFSNG             Ja
  182. DEFDBL             Ja
  183. DEFSTR             Ja
  184. DELETE             Nicht möglich
  185. DIM                Ja
  186. END                Ja
  187. END SUB            Ja (siehe "SUB")
  188. EOF()              Ja
  189. ERASE              Ja
  190. ERL                Ja
  191. ERR                Ja
  192. ERROR              Ja
  193. EXIT SUB           Ja (siehe "SUB")
  194. EXP()              Ja
  195. FIELD              Ja
  196. FILES              Ja
  197. FIX()              Ja
  198. FOR                Ja
  199. FRE()              Ja
  200.   FRE(-3) Gibt AvailMem(MEMF_LARGEST) zurück, wie es auch AmigaBASIC tut.
  201.   FRE(0)  Erzwingt eine Garbage-Collection (Aufräumen des Speichers für
  202.           Strings) und gibt die Größe des noch freien Stringspeichers zurück.
  203. GET                Ja
  204. GOSUB              Ja
  205. GOTO               Ja
  206. HEX$()             Ja
  207. IF                 Ja
  208. INKEY$             Ja
  209. INPUT              Ja
  210. INPUT$()           Ja
  211. INPUT #            Ja
  212. INSTR              Ja
  213. INT()              Ja
  214. KILL               Ja
  215. LBOUND             Nein
  216. LEFT$()            Ja
  217. LEN()              Ja
  218. LET                Ja
  219. LIBRARY            Ja
  220.   Die ".bmap"-Dateien werden nur während der Übersetzung benötigt.
  221. LINE               Ja
  222. LINE INPUT         Ja
  223. LINE INPUT #       Ja
  224. LIST               Nicht möglich
  225. LLIST              Nicht möglich
  226. LOAD               Nicht möglich
  227. LOC()              Ja
  228. LOCATE             Ja
  229. LOF()              Ja
  230. LOG()              Ja
  231. LPOS()             Ja
  232. LPRINT             Ja
  233. LPRINT USING       Ja
  234. LSET               Ja
  235. MENU               Ja
  236. MENU()             Ja
  237. MERGE              Nicht möglich
  238. MID$()             Ja
  239. MKI$()             Ja
  240. MKL$()             Ja
  241. MKS$()             Ja
  242. MKD$()             Ja
  243. MOUSE()            Ja
  244. MOUSE              Ja
  245. NAME               Ja
  246. NEW                Nicht möglich
  247. NEXT               Ja
  248. OBJECT.AX          Ja
  249. OBJECT.AY          Ja
  250. OBJECT.CLIP        Ja
  251. OBJECT.CLOSE       Ja
  252. OBJECT.HIT         Ja
  253. OBJECT.ON          Ja
  254. OBJECT.OFF         Ja
  255. OBJECT.PLANES      Ja
  256. OBJECT.PRIORITY    Nein
  257. OBJECT.SHAPE       Ja
  258. OBJECT.START       Ja
  259. OBJECT.STOP        Ja
  260. OBJECT.VX          Ja
  261. OBJEXT.VX()        Ja
  262. OBJECT.VY          Ja
  263. OBJECT.VY()        Ja
  264. OBJECT.X           Ja
  265. OBJECT.X()         Ja
  266. OBJECT.Y           Ja
  267. OBJECT.Y()         Ja
  268. OCT$()             Ja
  269. ON BREAK GOSUB     Ja
  270. ON COLLISION GOSUB Ja
  271. ON ERROR GOTO      Ja
  272. ON MENU GOSUB      Ja
  273. ON MOUSE GOSUB     Ja
  274. ON TIMER ... GOSUB Ja
  275. ON ... GOSUB       Ja
  276. ON ... GOTO        Ja
  277. OPEN               Ja
  278. OPTION BASE        Nein
  279. PAINT              Ja
  280. PALETTE            Ja
  281. PATTERN            Ja
  282. PEEK               Ja
  283. PEEKL              Ja
  284. PEEKW              Ja
  285. POINT              Ja
  286. POKE               Ja
  287. POKEL              Ja
  288. POKEW              Ja
  289. POS()              Ja
  290. PRESET             Ja
  291. PRINT (oder ?)     Ja
  292. PRINT USING        Ja
  293. PRINT #            Ja
  294. PRINT USING #      Ja
  295. PSET               Ja
  296. PTAB               Ja
  297. PUT                Ja
  298. RANDOMIZE          Ja
  299. READ               Ja
  300. REM                Ja
  301. RESTORE            Ja
  302. RESUME             Ja
  303. RETURN             Ja
  304. RIGHT$()           Ja
  305. RND()              Ja
  306.   Der Zufallszahlenerzeuger stammt von Steve Beats (Fish disk 20).
  307. RSET               Ja
  308. RUN                Nein
  309. SADD()             Ja
  310. SAVE               Nicht möglich
  311. SAY                Ja
  312. SCREEN             Ja
  313. SCREEN CLOSE       Ja
  314. SCROLL             Ja
  315. SGN()              Ja
  316. SHARED             Ja
  317. SIN()              Ja
  318. SLEEP              Ja
  319. SOUND              Nein
  320. SPACE$()           Ja
  321. SPC()              Ja
  322. SQR()              Ja
  323. STICK              Ja
  324.   Liest direkt aus Hardware-Registern.
  325. STOP               Nein
  326. STR$()             Ja
  327. STRIG()            Ja
  328.   Liest direkt aus Hardware-Registern.
  329. STRING$()          Ja
  330. SUB                Ja
  331.   Parameter werden nicht wie (so glaube ich) bei AmigaBASIC mit Zeigern
  332.   (call by reference) übergeben, sondern es werden die Werte übergeben
  333.   (call by value).
  334.   Anders als bei AmigaBASIC sind Rekursionen erlaubt, Werte lokaler Variablen
  335.   bleiben nach dem Verlassen eines Unterprogramms allerdings nicht
  336.   erhalten.
  337. SWAP               Ja
  338. SYSTEM             Ja
  339. TAB()              Ja
  340. TAN()              Ja
  341. TIME$              Ja
  342. TIMER              Ja
  343. TIMER()            Ja
  344. TRANSLATE$()       Ja
  345. TRON               Nein
  346. TROFF              Nein
  347. UBOUND             Nein
  348. UCASE$             Ja
  349. VAL                Ja
  350. VARPTR             Ja
  351. WAVE               Nein
  352. WEND               Ja
  353. WHILE              Ja
  354. WIDTH              Nein
  355. WINDOW             Ja
  356. WINDOW CLOSE       Ja
  357. WINDOW OUTPUT      Ja
  358. WINDOW()           Ja
  359. WRITE              Ja
  360. WRITE #            Ja
  361.  
  362.   außerdem möglich sind:
  363. =, <, >, <=, >=, <>, MOD, *, /, ^, +, -, \, NOT, AND, OR, XOR, EQV, IMP
  364.  
  365.  
  366.  
  367.  
  368.   ÜBER DEN COMPILER
  369.  
  370. "Cursor" selbst wurde zunächst in AmigaBASIC geschrieben, wurde inzwischen
  371. aber auf den SAS/Lattice C-Compiler übertragen. Die Library "basic.library"
  372. wurde in Assembler geschrieben und mit "A68k" von Charlie Gibbs übersetzt.
  373.  
  374.  
  375.  
  376.  
  377. Fehlerberichte, Verbesserungsvorschläge, Kritik, GELD (per Post oder
  378. Überweisung auf: Sparkasse Bielefeld BLZ 48050161, Konto-Nr. 39531942), etc.
  379. bitte an
  380.  
  381.                                             Jürgen Forster
  382.                                             Lintheide 9
  383.                                             33719 Bielefeld
  384.                                             Germany
  385.  
  386.